#pragma once

#include "defines.h"
#include "platform/vk/vk_device_context.h"

namespace vkrender
{
    class VulkanTexture
    {
    private:
        VkImage image;
        VkDeviceMemory memory;
        VkImageView imageView;
        uint32_t width;
        uint32_t height;

        std::shared_ptr<VulkanDeviceContext> context;

    public:
        VulkanTexture(
            const std::shared_ptr<VulkanDeviceContext>& context,
            const std::string& filepath);
        ~VulkanTexture();

        VkImageView getImageView() const { return imageView; }

    private:
        bool loadTexture(const std::string& filepath);
        void createImageView();
    };
}
